With the increasing use of software applications (referred to as “apps”) designed to run on smartphones, tablets and other mobile device, users are generally interacting with their smartphones in two different ways; either through native apps running on their phones (downloaded apps or apps available when the phone is purchased) or using a browser and a web page, possibly implemented in the phone as a so called web app.
A native app is installed directly onto the device, and users typically acquire these apps through an online store. Native apps run fast and smoothly on the user's device since (a) the data used by the app can be stored locally, (b) native code, such as a compiled C source code, can be used instead of interpreted code (e.g. JavaScript), and (c) the programmer has access to application programming interfaces (APIs) to render graphics quickly using a built-in graphics processing unit (GPU).
Instead of using a native app, the user can choose to visit a web page using a browser or a web app. Many services today can be accessed both ways; for instance, Facebook can be accessed by using a native app as well as by visiting the Facebook homepage from the browser. Historically, browsing was quite slow, since every click resulted in a request to the web server, and the user would have to wait for the content to return. Today, small scripting programs typically written in JavaScript are downloaded to the user device and run locally. This means that tedious round-trip times of the network often can be avoided and JavaScript based webpages can be almost as responsive as a native app. While native apps still have an advantage when it comes to high-demanding applications such as games, the gap between web apps and native apps has been narrowing.
However, a problem that is similar to both native apps and web apps is that they are typically slow when they need to contact a server to obtain information. As an example, the Facebook app may be fast when scrolling is undertaken, but when a feed is to be updated, a message saying “updating . . . ” may appear for several seconds before the feed updates. Another example is a bank app; the user interface may be quick and responsive within the app, but as soon as the user tries to access his or her transactions, several seconds will lapse before the information is actually shown on the screen.
The latency experienced by the user can be divided into three categories: latency that comes from execution speed on the user device itself, latency that comes from the wireless network, i.e., the Radio Access Network (RAN), and latency that comes from the network connecting the RAN with the providers of services, e.g., internet. The first type of latency can be more or less eliminated by using a well programmed native app on the device. In the case of a web app the JavaScript code will execute a bit slower but should still not be generating latencies that are in the order of seconds. The latency for the wireless network can be significant, but modern wireless access technologies have greatly reduced latencies. The remaining latency is that of the Internet itself, i.e., the round-trip-time from the cellular network to the server that hosts the content or provides a service and back to the cellular network again.
As wireless access technologies have become faster, the Internet latency is starting to dominate.